package main

import (
	"flag"
	"fmt"
)

// os.Args
// 命令行携带参数 mian.exe -name "tom"或者mian.exe -name="tom"

func main() {
	// 创建标志位参数方式1 ，取值使用指针
	name := flag.String("name", "游客", "请输入用户名")
	age := flag.Int("age", 999, "请输入年龄")
	// 创建标志位参数方式1 ，直接使用
	// var name string
	// flag.StringVar(&name, "name", "游客", "请输入用户名")

	// 使用标志位解析命令行参数
	flag.Parse()

	// 获取输入参数
	fmt.Printf("name: %s\n", *name)
	fmt.Printf("age: %d\n", *age)

	// 其它方法
	fmt.Printf("flag.Args(): %v\n", flag.Args())   // 返回命令行参数后的其它参数
	fmt.Printf("flag.NArg(): %v\n", flag.NArg())   // 返回命令行参数后的其它参数个数
	fmt.Printf("flag.NFlag(): %v\n", flag.NFlag()) // 返回使用的命令行参数个数
}

/*
05flag_demo>go build main.go
05flag_demo>main.exe -name "tom" -age 19 other a b
name: tom
age: 19
flag.Args(): [other a b]
flag.NArg(): 3
flag.NFlag(): 2
*/
